import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import './service/flexible'
import errorHandler from './utils/errorHandler/index'
import socketPlugin from './plugins/io' // 引入 Socket 插件
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
// 引入 Pinia 的 Socket 注入插件（之前创建的 socketPlugin.js）
import { socketPlugin as piniaSocketInjector } from './store/socketPlugin'
import confirm from './utils/confirm'
import toast from './utils/toast'
import './assets/iconfont/iconfont.css'

// 1. 创建 Pinia 实例
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)

// 2. 创建 Vue 实例
const app = createApp(App)

// 3. 安装 Socket 插件，并获取插件创建的唯一 Socket 实例
// （假设 socketPlugin 安装后会返回创建的 socket 实例，这是关键）
const socket = app.use(socketPlugin, {
  connection: 'http://43.138.15.137:3000', // 你的服务端地址
})

// 4. 向 Pinia 注入 Socket 实例（确保 Pinia 和组件用的是同一个实例）
pinia.use(piniaSocketInjector(socket))

// 5. 配置全局错误处理、路由、Pinia 等
errorHandler.setupGlobal(app)
app.use(router)
  .use(pinia)
  .use(confirm)
  .use(toast)
  .mount('#app')

// 6. 验证 Socket 连接状态（可选，用于调试）
socket.on('connect', () => {
  console.log('Socket 连接成功！实例 ID：', socket.id)
})
socket.on('connect_error', (err) => {
  console.error('Socket 连接失败：', err.message) // 连接失败时会提示原因（如地址错误、跨域）
})